﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LCTNote.Business;
using LCTNote.Models.DataModels;

namespace LCTNote
{
    public partial class frmDangKy : Form
    {
        private static bool[] coLoi;

        public frmDangKy()
        {
            InitializeComponent();
        }

        private void frmDangKy_Load(object sender, EventArgs e)
        {
            //Khai báo mảng coLoi
            coLoi = new bool[4] { true, true, true, true };

            #region Định dạng comboBox ngày tháng năm
            
            //Thêm giá trị mặc định cho combobox Ngày tháng năm
            cbbNgay.Items.Add("dd");
            cbbThang.Items.Add("mm");
            cbbNam.Items.Add("yyyy");

            //Định dạng ngày tháng năm
            for (int i = 1; i <= 31; i++)
            {
                cbbNgay.Items.Add(i);
            }
            for (int i = 1; i <= 12; i++)
            {
                cbbThang.Items.Add(i);
            }
            for (int i = DateTime.Now.Year; i >= 1950; i--)
            {
                cbbNam.Items.Add(i);
            }
            
            //Mặc định chọn giá trị index=0;
            cbbNgay.SelectedIndex = 0;
            cbbThang.SelectedIndex = 0;
            cbbNam.SelectedIndex = 0;
            
            #endregion
        }

        private void cbbGioiTinh_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void btnDangKy_Click(object sender, EventArgs e)
        {            
            #region Bẫy lỗi                                    
            
            //Bỏ đăng nhập
            if (txtTenDangNhap.Text == "")
            {
                lblTenDangNhap.Text = "Tên đăng nhập không được bỏ trống!";
                lblTenDangNhap.ForeColor = Color.Red;
                coLoi[0] = true;
            }
            else
                coLoi[0] = false;

            //Bỏ mật khẩu
            if (txtMatKhau.Text == "")
            {
                lblMatKhau.Text = "Mật khẩu không được bỏ trống!";
                lblMatKhau.ForeColor = Color.Red;
                coLoi[1] = true;
            }
            else
                coLoi[1] = false;

            //Bỏ tên hiển thị
            if (txtTenHienThi.Text == "")
            {
                lblTenHienThi.Text = "Tên hiển thị không được bỏ trống!";
                lblTenHienThi.ForeColor = Color.Red;
                coLoi[2] = true;
            }
            else
                coLoi[2] = false;

            //Bỏ ngày sinh
            if (cbbNam.Text == "yyyy" || cbbThang.Text == "mm" || cbbNgay.Text == "dd")
            {
                lblNgaySinh.Text = "Ngày sinh không được bỏ trống!";
                lblNgaySinh.ForeColor = Color.Red;
                coLoi[3] = true;
            }
            else
                coLoi[3] = false;

            int k;
            for (k = 0; k < coLoi.Length; k++)
            {
                if (coLoi[k])
                {                    
                    break;
                }
            }
            if (k == coLoi.Length)
            {
                themNguoiDung();
            }
            else
            {
                MessageBox.Show("Bạn điền thiếu thông tin!");
            }
            #endregion                                              
        }

        //Hàm thêm người dùng
        public void themNguoiDung()
        {
            //Chuyển chuột sang chế độ chờ
            this.Cursor = Cursors.WaitCursor;

            NguoiDungDataModel nguoiDung = new NguoiDungDataModel();

            //lấy thành phần thông tin ngày sinh
            int ngay, thang, nam;
            ngay = Convert.ToInt32(cbbNgay.Text);
            thang = Convert.ToInt32(cbbThang.Text);
            nam = Convert.ToInt32(cbbNam.Text);
            DateTime ngaySinh = new DateTime(nam, thang, ngay);

            //Lấy thông tin người dùng
            nguoiDung.tenDangNhap = txtTenDangNhap.Text;
            nguoiDung.matKhau = txtMatKhau.Text;
            nguoiDung.ngaySinh = ngaySinh;
            nguoiDung.gioiTinh = cbbGioiTinh.Text;
            nguoiDung.soDienThoai = txtSDT.Text;
            nguoiDung.tenHienThi = txtTenHienThi.Text;
            nguoiDung.diaChi = txtDiaChi.Text;

            //Thêm người dùng vào CSDL
            if (NguoiDungBusiness.themNguoiDung(nguoiDung))
            {                
                MessageBox.Show("Đăng ký thành công!");
                this.Cursor = Cursors.Default;
                this.DialogResult = DialogResult.OK;
            }
            else
            {
                MessageBox.Show("Đăng ký thất bại!");
            }

        }

        private void txtTenDangNhap_KeyPress(object sender, KeyPressEventArgs e)
        {
            lblTenDangNhap.Text = "";
        }

        private void txtMatKhau_KeyPress(object sender, KeyPressEventArgs e)
        {
            lblMatKhau.Text = "";
        }

        private void txtTenHienThi_KeyPress(object sender, KeyPressEventArgs e)
        {
            lblTenHienThi.Text = "";
        }

        private void cbbNgay_SelectedValueChanged(object sender, EventArgs e)
        {
            if (cbbThang.Text != "mm" && cbbNam.Text != "yyyy")
            {
                lblNgaySinh.Text = "";
            }
        }

        private void cbbThang_SelectedValueChanged(object sender, EventArgs e)
        {
            if (cbbNgay.Text != "dd" && cbbNam.Text != "yyyy")
            {
                lblNgaySinh.Text = "";
            }
        }

        private void cbbNam_SelectedValueChanged(object sender, EventArgs e)
        {
            if (cbbThang.Text != "mm" && cbbNgay.Text != "dd")
            {
                lblNgaySinh.Text = "";
            }
        }
    }
}
